1. Field of the Invention
This invention relates to the field of electronic music equipment. More specifically, the invention comprises a device and method for microtuning a component employing the standard MIDI interface so that it can receive and transmit frequency steps other than those employed in the conventional twelve-step scales found in traditional Western music. The invention makes use of parameters already available within the MIDI interface standard.
2. Description of the Related Art
Music is created and enjoyed by virtually every culture. The nature of the music deemed pleasing by one particular culture, however, is highly subjective. Different people perceive pitch variations in different ways. Only the perception of the octave interval is culturally independent.
The octave interval is described by a simple mathematical function. Beginning with a given tone having a given frequency, the next higher octave will be found by doubling that frequency. As an example, the note designated as A over Middle C is generally tuned to a frequency of 440 Hz. The next higher A therefore has a frequency of 880 Hz. People of all cultures perceive the A note at 880 Hz to be the same note as the A note at 440 Hz, although all people will also recognize the difference in pitch. Thus, the perception of the octave is not dependent on culture. All cultures perceive the octave interval in the same way.
The same cannot be said of how the octave interval is divided. Each octave can be subdivided in an infinite variety of ways. These subdivisions generally are referred to as “steps” or “half steps.” FIG. 1 illustrates one octave division which is the standard in Western (meaning Western European cultures and their descendants) music. Using Middle C as a starting point (262 Hz), most readers will recall that the Western octave is divided into twelve “half steps” (sometimes called semitones). The size of the half step between frequency f2 and frequency f1 is governed by the relationship:f2=f1/0.9439
Thus, the C sharp (C#) immediately above the starting A has a frequency of 277 Hz. Those skilled in the art will appreciate that the starting point for the octave is relatively insignificant in comparison to the step size between the frequencies selected. As an example, the A above middle C is often used as a point of reference for tuning. While this note has traditionally been tuned to 440 Hz, some modern orchestras tune the starting A to 444 Hz. The frequency intervals remain governed by the equation presented above, however. As a result, although the pitch of all notes played by the orchestra has been shifted slightly higher, the audience will hear the musical scales as the same.
It may surprise some readers to learn that the frequency intervals set forth in FIG. 1 only became standard within the past several centuries, even in Western music. Johann Sebastian Bach, the famous German composer, worked to standardize orchestral tunings. Prior to his creation and promotion of the standard intervals, many different tunings were employed. These were largely unique to certain instruments. Bach's standardized tuning is now referred to as the “Equal Temperament.”
The prior variety in tunings is not surprising when one considers the variety of devices used to make music. The guitar serves as a good example. Those skilled in the art will know that a guitar is a musical machine that operates via varying the vibrating length of strings maintained under constant tension. The length variation is produced by the musician's fingers pressing a string down against a fingerboard. Most modern guitars have transverse wires embedded in the fingerboard, called “frets.” The function of the fret is to provide a hard metal edge which defines the vibrating length of string at a fixed position corresponding to the appropriate frequency intervals. Thus, the frets must be physically placed so as to produce frequency intervals like those set forth in FIG. 1.
The proper positioning of the frets requires an understanding of the physics describing vibrating strings. This understanding was quite beyond the knowledge of medieval instrument makers. The frequency intervals produced by a particular instrument were often dependent upon the maker's variations in construction. Thus, even in Western music, frequency intervals like those disclosed in FIG. 1 are a relatively modern creation.
The human perception of frequency intervals appears to be purely subjective. The terms “consonance” and “dissonance” are often used to describe this perception, with “consonance” describing a perception where two notes make a harmonious combination and “dissonance” describing a perception where two notes seem to clash. These perceptions are apparently cultural, as combinations which sound pleasing to Western ears are often displeasing to those raised in other cultures.
One good example is Middle Eastern music. Music composed by persons of Middle Eastern descent is not limited to the frequency intervals disclosed in FIG. 1. In particular, much smaller frequency intervals are needed for certain compositions. FIG. 2 discloses an octave divided into 24 frequency intervals. A typical Arabic musical scale—known as Rast—is disclosed in FIG. 3.
Obviously, musical compositions created using the frequency intervals disclosed in FIGS. 2 and 3 cannot be played on a Western instrument such as the piano or guitar. Thus, the frequency intervals which were standardized for Western music are not compatible with Middle Eastern music. The same can be said for Oriental music and music of many other cultures.
The MIDI Standard
The music industry has traditionally been driven by analog technology. Analog circuitry has long been used for recording, signal processing, and amplification. Digital technology came into use during the early 1980's. During this same period, computer technology was applied to many signal processing applications, such as oscilloscopes and spectrum analyzers. There was a general desire to apply computer technology to musical instruments and recording equipment. In order to do this, however, an interface standard was needed.
In 1982, a meeting of scientists and engineers from a number of companies resulted in the creation of the Musical Instrument Digital Interface, commonly referred to as “MIDI.” The MIDI interface standard allows the analog electrical output of a musical instrument—such as a keyboard or electric guitar—to be fed into a computer as digital data. These data are then manipulated using software and typically fed out to amplification equipment which generates sound for the enjoyment of listeners. The computer software can perform all the functions typically done independently by noise gates, phase shifters, distortion effects, and the like. The computer can also do much more, however. As an example, the computer can receive input tone data from a keyboard and digitally manipulate it to produce the sound of a trumpet. The computer can, in fact, generate an entire orchestra of sounds using the single input from a keyboard.
Those skilled in the art will realize that the term “computer” in this context encompasses a broad range of devices. A personal computer having a MIDI card can be employed. There are also dedicated rack-mounted MIDI computers that are used to receive input from a dozen or more instruments and which can control an entire sound system.
The MIDI system encompasses both hardware and a data transmission protocol. FIG. 4 illustrates some standard MIDI hardware, showing both analog and MIDI transmissions. FIG. 5 illustrates MIDI connection hardware. Three MIDI ports (connections) are provided for the user: MIDI IN, MIDI OUT, and MIDI THRU. MIDI IN receives MIDI data from an external component. MIDI out transmits data created within the component. MIDI THRU (which is optional) allows for a straight pass-through of MIDI data with no alterations.
The way in which the MIDI interface transmits signals is more important to the present invention than the hardware involved. MIDI uses a serial interface with transmissions occurring asynchronously. Data is transmitted in ten bit bytes, with a start bit, eight data bits, and a stop bit. When the data is to be used, the start and stop bits are discarded, leaving the eight data bits. These are then passed on to the microprocessor within each MIDI device for processing.
Those skilled in the art will know that an 8 bit packet of data can produce no more than 256 unique words (2 raised to the 8th power). Given that the MIDI standard must ideally transmit a great deal of information about a musical sequence, including pitch, tremolo, attack, sustain, and the like, 256 words are clearly insufficient. To overcome this problem, the first byte in a stream of data is designated as a Status Byte. The Status Byte informs the receiving device what kind of message is coming next. The actual data following the Status Byte are called Data Bytes. The first bit in a Status Byte is set to “1” (1nnnnnnn). The first bit in a Data Byte is set to 0 (0nnnnnnn). This election reduces the number of information carrying bits in each byte to only 7. However, the use of the Status Byte allows the interface to identify 256 different types of data. Therefore, each MIDI message contains a Status Byte instructing the receiving device what to do and one or more Data Bytes telling it how to perform the specified function.
The Status Byte performs the additional function of designating a channel for a particular signal. Those skilled in the art will know that musical recording often involves the blending of many different separate channels. Often, each instrument in an ensemble will be fed into a mixer on its own channel. When a MIDI interface is used, all this data is transmitted on a single bus. Thus, it is important to know which data belongs on which channel. To accomplish this goal, the Status Byte is divided into two halves. The lower four bits designate the channel number (providing 16 possible channels). The second, third, and fourth bit of the Status Byte actually designate the desired function (recalling that the first bit is used to designate the byte as a Status Byte). The use of these three bits allow eight separate instructions. Thus, the Status Byte allows eight different instructions to be given on one or more of sixteen different channels. The eight different types of Status Bytes and the subsequent attached Data Bytes create two basic types of MIDI messages: Channel messages and System messages. Channel messages are sent to one particular device. System messages, in contrast, are directed to all devices on the MIDI network.
Channel messages, in turn, are subdivided into two categories. Channel Voice messages specify or modify a musical note, or group of notes. Channel Mode messages are used to configure the receiver.
System messages are subdivided into three types: System Common messages, System Real-Time messages, and System Exclusive messages. System Common messages specify data that are of interest to all devices in the system (such as overall volume). System Real-Time messages are used to handle timing related events (such as percussion sequences). System Exclusive messages are reserved for each manufacturer's use with its own products. As such, System Exclusive messages are not standardized. FIG. 6 illustrates this categorization of messages.
It is important for the reader to understand the details of some particular Status Bytes (out of the eight possible types). The first type of Status Byte is 1000nnnn (where “n” denotes a variable of either 1 or 0). Recalling what was explained previously, the first bit is set to “1” to indicate the fact that this is a Status Byte. The next three bits are all set to “0”, indicating that this particular Status Byte carries the instruction “Note Off.” The last four bits specify which channel the command is directed to. Thus, the transmission of 10000000, would decode as a “Note Off” command on the first of the sixteen channels. Data Bytes would then follow, instructing which note to turn off, etc.
The second Status Byte is 1001nnnn, which carries the instruction “Note On.” The third Status Byte is 1010nnnn, known as “Key Aftertouch.” Although this function is not commonly used, its intent was to convey data regarding the pressure remaining on the key of a keyboard after it has been pressed. It is capable of measuring both vertical and lateral variations in pressure on the key. This function is needed since some keyboards allow variations produced both by the musician's downward pressure on the key and lateral pressure (typically used to create vibrato).
The fourth Status Byte is 1011nnnn, which carries the instruction “Control Change.” It is always followed by two Data Bytes The first Data Byte specifies the type of control to be changed, and the second Data Byte specifies the amount of the change. One would expect that 128 different control functions would therefore be allowed (0 through 127 of the 7 bit word comprising the Data Byte). However, controllers 121 through 127 are reserved for Channel Mode messages. Thus, only 0 through 120 are available to designate control functions.
The fifth Status Byte is 1100nnnn, which carries the instruction “Program Change.” This message is followed by one Data Byte specify the program number and one Data Byte specifying the channel.
The sixth Status Byte is 1101nnnn, which carries the instruction “Channel Aftertouch.” This instruction affects all the notes on a given channel. It could, for example, specify a prolonged sustain (“reverb”) for the notes on a particular channel.
The seventh Status Byte is 1110nnnn, which carries the instruction “Pitch Bend.” This function allows a note to be pitch shifted up or down in steps which are sufficiently small to escape detection by the human ear. Unfortunately, it normally operates to shift the pitch of every note, rather than just selected notes.
The eighth Status Byte is 1111nnnn, which carries the instruction “System Messages.” These messages are used to control all channels on the MIDI system. As a result, the lowest three binary digits are not needed to designate a channel number. They may be used, instead, to carry additional data. Thus, there are sixteen different allowable System Messages.
The message 11110000 is a MIDI Exclusive message. It can be followed by any number of Data Bytes in which the manufacturer ID and model number are specified for a given musical instrument or piece of hardware.
There are some digital messages which will, by their nature, need to be transmitted to all components on the MIDI system. These are called System Common messages. The first System Common message is 11110001, known as “MIDI Time Code Quarter Frame.” MIDI time code (“MTC”) was introduced in 1987 in order to synchronize timing functions in MIDI to SMPTE devices such as video and audio recorders. Those skilled in the art will realize that prior art analog devices must be synchronized in order to prevent scanning errors (such as when a video image “rolls”). MTC can be transmitted via Full Frame or Quarter Frame messages. A Full Frame message would be too large to send for every SMPTE frame (which might require 60 such frames per second). Thus, MTC Quarter Frame messages are sent in two-byte groups at a constant rate of 120 messages per second. These messages serve the dual purpose of providing a basic timing pulse for the system and providing a 4-bit nibble defining a digit of a specific field of the current SMPTE time code location.
The second System Common message is 11110010, known as “Song Position Pointer.” It instructs a sequencer or drum machine which position in time to start the playback from. This position is a count of time (14-bit value) from the beginning of the sequence.
The third System Common message is 11110011, known as “Song Select.” One Data Byte is used after this message to specify a sequence or drum pattern number which will commence upon receipt of a real-time start message.
The fourth and fifth System Common messages (11110100 and 11110101) are both undefined. The sixth System Common message is 1110110, called “Tune Request.” This message requests that all analog oscillators on the system be retuned to correct for frequency shift errors. Analog synthesizers had a tendency to pitch shift over time, so this retuning was necessary. Now that almost all the synthesizers are digital this command is rarely used.
The seventh System Common message is 11110111, known as “EOX.” “EOX” is an acronym standing for End Of eXlusive. This serves as a flag to indicate the end of a MIDI Exclusive message.
The next set of commands is composed of eight System Real-Time messages. The first of these is 11111000, which is the MIDI Clock message. It is sent at the rate of 24 messages per quarter note to synchronize clock-based MIDI systems (such as drum sequences). The Tempo setup at the sending device alters the timing of this message.
The second Real-Time message is 11111001, which is undefined.
The next three Real-Time messages are best understood in conjunction. 1111010 is “Start”, 11111011 is “Continue”, and 11111100 is “Stop.” These three messages control synchronization when MIDI's synchronization functions are used. When the master instrument sends a Start, Continue, or Stop message, all other MIDI devices immediately respond to these commands.
The sixth Real-Time message, 11111101, is undefined.
The seventh Real-Time message is 11111110, known as “Active Sensing.” If an instrument is equipped with an Active Sensing device, it should send Active Sensing messages every 300 milliseconds or less, unless it is busy sending other MIDI messages at a higher rater. If the receiver of these messages is also Active Sensing-equipped, it should recognize them and send its own Active Sensing messages back to the other instruments. If an instrument never receives an Active Sensing message, it should operate normally. However, once an instrument receives an Active Sensing message, it will subsequently expect to receive additional such messages at least once every 300 milliseconds. If it does not receive any message during this time period, it assumes that all MIDI cables have been disconnected and will turn all voices off. Thus, this type of message serves an error-sensing function.
The eighth Real-Time message is 11111111, which is System Reset. It instructs all MIDI devices in the system to return to their initialized power-up condition. This command is rarely used, typically being sent only when the system hangs in a loop and ceases functioning.
All System Real-Time messages are single byte messages used to synchronize clock-based MIDI equipment. Since they are real time messages, they can be inserted anywhere in the data stream—even between the Status Byte and Data Bytes of another type of message. These Real-Time messages are given a high priority in the data processing hierarchy in order to maintain synchronization.
FIG. 7 provides a summary of the MIDI messages described in the preceding text.
Optimization techniques are used to reduce the amount of data the MIDI interface needs. One prominent technique is called Running Status. Running Status means that once a Status Byte is received in a MIDI instrument, it will maintain that status. As an example, if a Note On Status Byte is sent, then additional Data Bytes are sent to specify the note and velocity. Using Running Status, additional data is sent specifying more notes—making use of the original Status Byte. A new Status Byte is only sent if a new type of command is needed.
Limitations in the MIDI System
The MIDI interface system is now recognized to have three significant limitations: (1) Bandwidth limitations; (2) Network Routing Limitations; and (3) Music representation limitations.
The bandwidth limitation problem results from the fact that the MIDI transmission rate is fixed at 31250 bits per second. It thus takes 312 microseconds to transmit one 10-bit word. This transmission rate was considered fast when it was created in the early 1980's. However, those skilled in the art will know that data transmission rates are now much higher.
The bandwidth limitation means that complex musical textures are often chopped or truncated. Musicians refer to this phenomenon as “MIDI choke.” It often produces a jerkiness or sluggishness in the sound. The proposed invention does not really address this bandwidth concern. However, it is important to be aware of the bandwidth concern, because any proposed solution to other MIDI limitations must not aggravate the bandwidth issue.
The second MIDI limitation involves network routing. MIDI data transmission is unidirectional; i.e., each communication direction requires its own cable. Any reasonably complex MIDI system therefore winds up with a web of cables. Those skilled in the art will contrast this scenario with the simplicity of parallel interface cables used in computing devices. Modern networking technology could have solved these interconnection problems much more elegantly. This was not anticipated at the time the MIDI standard was created. Local Area Network (LAN) to MIDI converters are now often used to work around this problem.
The proposed invention does not directly address these networking problems. Again, however, it is important to understand that any new technique that is to live within the MIDI protocol must not aggravate the existing problems.
The proposed invention does address MIDI's third recognized limitation—its limited ability to represent different musical forms. When MIDI was developed, it was strongly influenced by Western music. Thus, it is designed to represent the twelve notes in an equal-temperament scale. It is severely limited in its ability to move outside of this scale.
The two main weaknesses are MIDI's inability to control timbre and its inability to create certain pitches. MIDI has no control over timbre. This results in the artificial sound quality of many MIDI compositions, wherein every note has the same timbre and envelope. A second limitation is the lack of control over the type of sound to be produced by different synthesizers interpreting the same MIDI message.
MIDI's pitch limitations are the primary focus of the present invention. By giving the MIDI system the ability to create notes which do not lie on the traditional Western scales, the inventor allows the MIDI standard to be used by musicians in non-Western cultures.
MIDI's Pitch Limitations
A MIDI Data Byte, as explained previously, is only 7 bits long. It can thus only carry 128 possible discrete values for any variable, including pitch. Having 128 possible pitch values is sufficient for Western music played on a keyboard. It is also sufficient for “well-tempered music” played on the traditional Western scale in which the octave is divided into twelve equal semitones. It is insufficient, however, for modern Western music—which seeks to deviate from the conventional octaval division. It is also insufficient to represent the music of many non-Western cultures.
Prior Art Approaches to MIDI's Pitch Limitations
Since the weakness of pitch representation is inherent in the MIDI standard, one approach has been to try and change or supplement the standard. This approach was taken by Robert Rich and Carter Scholz in the creation of their MIDI Tuning Standard (MTS). The MTS was later added to the MIDI standard. It can create a pitch resolution (minimum step size) of 0.0061 octaves. The MTS solution had the following theoretical advantages: (1) The 0.0061 resolution is sufficient for most researchers and musicians; (2) It is quite flexible in that it can retune a whole instrument, part of an instrument range, or even a single selected note; (3) The retuning can be done on the fly without interrupting other MIDI functions; and (4) It is standardized.
Unfortunately, although the MTS solution was added to the MIDI standard, it had no support from industry. In fact, no instrument that the inventor knows of presently makes use of the MTS. Thus, while it is a theoretical solution, it has not gained any industry acceptance.
The second approach to the pitch limitation involves the use of a tuning box. A tuning box is a piece of hardware which is attached externally to the sound synthesizer. The tuning box is programmed to retune the sound synthesizer. It uses the MIDI System Exclusive messages described previously (which the reader will recall are not standardized). The tuning box includes buttons for the user to press. When a button is pressed, the tuning box sends a System Exclusive message to retune the desired note. The tuning box connects to the musical instrument just like any other MIDI device—through the device's MIDI IN port.
Additional features can be added to the tuning box. For example, some tuning boxes are equipped with memory chips to store preset frequently used scales so that the entire scale can be selected by pressing a single recall button. Many tuning boxes also incorporate LCD displays augmenting the use of the memory functions.
The tuning box is relatively inexpensive and easy to use. It can be plugged into a synthesizer through the standard MIDI ports and can retune the desired notes through the press of a single button. Unfortunately, however, the tuning box approach is entirely dependent on the System Exclusive messages. The reader will recall that these messages are specific to each MIDI device and manufacturer (they are not standardized). Thus, tuning boxes will often only work with the one instrument they were designed for. At best, they will only work with instruments from the same manufacturer.
Another disadvantage inherent in using System Exclusive messages is the fact that they are of a very large size. They were actually designed for bulk dumps, as in when an instrument is first connected it can transmit its stored settings to other components on the system. These messages were not really intended for real time transmissions. As a result, the use of tuning boxes often slows the MIDI system because of the size of the System Exclusive messages employed.
A third traditional approach to solving MIDI's pitch limitations involves the use of Pitch Bending. Pitch Bending is a MIDI function which allows a note to be “bent” (pitch shifted up or down), in real time. Pitch Bend MIDI messages cause all the notes on that channel to be shifted up or down a specified amount. The pitch bend is specified as a 14-bit number, using two 7-bit bytes. This results in 16,384 pitch steps being available. The availability of 16,384 steps can produce pitch bends which are completely smooth to the human ear (even though they are carried out in discrete steps). It should also be noted that Pitch Bend commands are standard within the MIDI interface.
However, the use of Pitch Bend messages have two main disadvantages. First, they are Channel Voice messages (as explained previously). This means that they alter the pitch of every note on that channel, not just a few selected notes. Computer software can be used to work around this problem by assigning the notes to be retuned to a separate channel. Since there are only 16 channels to work with, though, losing a channel for every retuned note or set of notes is a cumbersome solution.
The second problem with using Pitch Bend messages is the fact that the range of pitch bending is set on the receiving instrument. Thus, different instruments may interpret and implement the same Pitch Bend message differently. This process can be cured by setting the pitch bending range on the instruments in question. However, more pitch setting is needed prior to playback, or live performance. The result is that the pitch bending approach cannot truly be described as standardized.